"""
  此文件对提取的自由驾驶的数据进行测试（测试s、v、acc，x横向）
"""

# !处理路径导入问题（添加绝对路径）！！！
import sys
import os
CODE_INTERNAL_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), '../../')) # 生成Code文件夹内部对应的绝对路径
sys.path.append(CODE_INTERNAL_PATH)

# 导入内部包
from utils.read_data import read_extract_free_drive_data
from utils.draw_data import draw_line_chart

FILE_PATH_I80_1_to = "../../../Data/Ngsim数据集/I80数据集/3. 提取数据/3. 自由驾驶数据/trajectories-0400-0415_free_drive.txt" # 2896 150 7
FILE_PATH_I80_2_to = "../../../Data/Ngsim数据集/I80数据集/3. 提取数据/3. 自由驾驶数据/trajectories-0500-0515_free_drive.txt" # 2697 150 7
# FILE_PATH_I80_3_to = "../../../Data/Ngsim数据集/I80数据集/3. 提取数据/3. 自由驾驶数据/trajectories-0515-0530_free_drive.txt" # 
# FILE_PATH_101_1_to = "../../../Data/Ngsim数据集/101数据集/3. 提取数据/3. 自由驾驶数据/trajectories-0750am-0805am_free_drive.txt" # 
# FILE_PATH_101_2_to = "../../../Data/Ngsim数据集/101数据集/3. 提取数据/3. 自由驾驶数据/trajectories-0805am-0820am_free_drive.txt" # 
# FILE_PATH_101_3_to = "../../../Data/Ngsim数据集/101数据集/3. 提取数据/3. 自由驾驶数据/trajectories-0820am-0835am_free_drive.txt" # 

def extract_test_data(one_car_data, self_s_idx=3, self_v_idx=4, self_acc_idx=5):
  # 提取s值
  self_s = [row[self_s_idx] for row in one_car_data]

  # 提取v值
  self_v = [row[self_v_idx] for row in one_car_data]

  # 提取acc值
  self_acc = [row[self_acc_idx] for row in one_car_data]

  return self_s, self_v, self_acc

def draw_chart(self_s, self_v, self_acc):
  data_x = [i for i in range(len(self_s))]

  # 绘制s
  datas_y = [{"data":self_s, "des":"自车车辆位置"}]
  labels = {"x":"时间（单位:0.1s）", "y":"位置（单位：m）"}
  draw_line_chart(data_x, datas_y, labels, "车辆纵向坐标")

  # 绘制v
  datas_y = [{"data":self_v, "des":"自车车辆速度"}]
  labels = {"x":"时间（单位:0.1s）", "y":"速度（单位：m/s）"}
  draw_line_chart(data_x, datas_y, labels, "车辆速度")

  # 绘制acc
  datas_y = [{"data":self_acc, "des":"自车车辆加速度"}]
  labels = {"x":"时间（单位:0.1s）", "y":"加速度（单位：m/s^2）"}
  draw_line_chart(data_x, datas_y, labels, "车辆加速度")


if __name__ == "__main__":
  # 读取数据
  free_drive_datas = read_extract_free_drive_data(FILE_PATH_I80_1_to)

  # 取一组测试数据
  test_data = free_drive_datas[2]

  # 提取测试数据
  self_s, self_v, self_acc = extract_test_data(test_data)

  # 绘图
  draw_chart(self_s, self_v, self_acc)